//https://leetcode.cn/problems/min-cost-climbing-stairs/
package codeRandomThoughts.Test746使用最小花费爬楼梯;

public class Solution {
    public int minCostClimbingStairs(int[] cost) {
        //dp[i]: 到达第i阶的最低花费 到达第i阶顶部的最低花费为dp[i+1]
        int[] dp = new int[cost.length+1];
        dp[0]=0;
        dp[1]=0;

        //最低花费可由之前的最低花费加上从之前台阶向上爬的费用获取
        for (int i = 2; i < dp.length; i++) {
            dp[i]=Math.min((dp[i-1]+cost[i-1]),(dp[i-2]+cost[i-2]));
        }

        return dp[cost.length];
    }
}
